Home

Computer science

'

\ufeffQ Write an address book program in python by using TKInter. Please download TKInterAddressBook.txt program. There are two task in this assignment. 1. \ufeffAdd entry fields for City, State and Zip in the above Address Book program. 2. \ufeffAdd logic for the Previous and Last button. When user click Previous button the program should display previous record and when click on Last button it should display last record. here the addressbook import pickle import os.path from tkinter import * \ufeff# Import tkinter import tkinter.messagebox class Address: def __init__(self, \ufeffname, street): self.name = \ufeffname self.street = \ufeffstreet class AddressBook: def __init__(self): window = \ufeffTk() \ufeff# Create a window window.title("AddressBook") \ufeff# Set title self.nameVar = \ufeffStringVar() \ufeffself.streetVar = \ufeffStringVar() \ufeffframe1 = \ufeffFrame(window) \ufeffframe1.pack() \ufeffLabel(frame1, \ufefftext="Name").grid(row=1, \ufeffcolumn=1, \ufeffsticky=W) \ufeffEntry(frame1, \ufefftextvariable=self.nameVar, width=40).grid(row=1, \ufeffcolumn=2) \ufeffframe2 = \ufeffFrame(window) \ufeffframe2.pack() \ufeffLabel(frame2, \ufefftext="Address").grid(row=1, \ufeffcolumn=1, \ufeffsticky=W) \ufeffEntry(frame2, \ufefftextvariable=self.streetVar, width=40).grid(row=1, \ufeffcolumn=2) \ufeffframe4 = \ufeffFrame(window) \ufeffframe4.pack() \ufeffButton(frame4, \ufefftext="Add", command=self.processAdd).grid(row=1, \ufeffcolumn=1) \ufeffbtFirst = \ufeffButton(frame4, \ufefftext="First", command=self.processFirst).grid(row=1, \ufeffcolumn=2) \ufeffbtNext = \ufeffButton(frame4, \ufefftext="Next", command=self.processNext).grid(row=1, \ufeffcolumn=3) \ufeffbtPrevious = \ufeffButton(frame4, \ufefftext = \ufeff"Previous", command = \ufeffself.processPrevious).grid(row = 1, \ufeffcolumn = 4) \ufeffbtLast = \ufeffButton(frame4, \ufefftext = \ufeff"Last", command = \ufeffself.processLast).grid(row = 1, \ufeffcolumn = 5) \ufeffself.addressList = \ufeffself.loadAddress() \ufeffself.current = 0 \ufeffif len(self.addressList) > 0: self.setAddress() \ufeffwindow.mainloop() \ufeff# Create an event loop def saveAddress(self): outputFile = \ufeffopen("address1.dat", "wb") \ufeffpickle.dump(self.addressList, outputFile) \ufefftkinter.messagebox.showinfo( \ufeff"Address saved", "A new address is saved") \ufeffoutputFile.close() \ufeffdef loadAddress(self): if not os.path.isfile("address1.dat"): return [] \ufeff# Return an empty list try: inputFile = \ufeffopen("address1.dat", "rb") \ufeffaddressList = \ufeffpickle.load(inputFile) \ufeffexcept EOFError: addressList = [] \ufeffinputFile.close() \ufeffreturn addressList def processAdd(self): address = \ufeffAddress(self.nameVar.get(), \ufeffself.streetVar.get() ) \ufeffself.addressList.append(address) \ufeffself.saveAddress() \ufeffdef processFirst(self): self.current = 0 \ufeffself.setAddress() \ufeffdef processNext(self): if self.current < \ufefflen(self.addressList) - 1: self.current += 1 \ufeffself.setAddress() \ufeffdef processPrevious(self): pass # Left as exercise def processLast(self): pass # Left as exercise def setAddress(self): self.nameVar.set(self.addressList[self.current].name) \ufeffself.streetVar.set(self.addressList[self.current].street) \ufeffAddressBook() \ufeff# Create GUI

'

Answer